#ifndef COLA_H
#define COLA_H
#include "ListaImp.h"

template <class T>
class Cola:public Iterable<T>{
	public:
	
		//pre: Exista la cola
		virtual bool encolarConPrioridad(T, int) abstract;
		//pos: devuelve true si en caso de cola acotada esta no estaba llena

		//pre: exista cola, un puntero a un elemento T
		virtual bool desencolar(T&) abstract;
		//pos: devuelve true si se pudo conseguir el elemento, false en otro caso, apuntando la referencia a NULL, borra ese elemento.

		
		//pre: exista cola, un puntero a un elemento T
		virtual bool proximo(T&) abstract;
		//pos: devuelve true si se pudo conseguir el elemento, false en otro caso, apuntando la referencia a NULL.

		//pre: Exista la cola
		virtual void vaciar() abstract;
		//pos: vacia la cola
		
		//predicados

		//pre: Exista la cola
		virtual bool esVacia() abstract;
		//pos:devuelve true si la cola esta vacia

		//pre: Exista la cola
		virtual bool esLlena() abstract;
		//pos: en caso de una cola acotada devuelve true si esta esta llena

		virtual void setPrioridadBase(int) abstract;

		virtual int getPrioridadBase() abstract;
};
#endif